#pragma once

#include <arpa/inet.h>
#include <netinet/in.h>
#include <string>

// 封装socket地址类型（sockaddr_in结构）
class InetAddress
{
public:
    explicit InetAddress(uint16_t port = 0, std::string ip = "127.0.0.1");
    explicit InetAddress(const struct sockaddr_in &addr)
        : addr_(addr)
    {
    }
    // 获取IP
    std::string toIp() const;
    // 获取IP:端口
    std::string toIpPort() const;
    // 获取端口
    uint16_t toPort() const;
    // 获取sockaddr_in结构
    const sockaddr_in *getSockAddr() const
    {
        return &addr_;
    }
    void setSockAddr(const sockaddr_in &addr)
    {
        addr_ = addr;
    }

private:
    sockaddr_in addr_;
};